<?php
/***********************************************************************************
‘ункци€ img_resize(): генераци€ thumbnails
ѕараметры:
  $src             - им€ исходного файла
  $dest            - им€ генерируемого файла
  $width, $height  - ширина и высота генерируемого изображени€, в пиксел€х
Ќеоб€зательные параметры:
  $rgb             - цвет фона, по умолчанию - белый
  $quality         - качество генерируемого JPEG, по умолчанию - максимальное (100)
***********************************************************************************/
//echo "ку-ка-ре-ку";

function img_resize($src, $dest, $width, $height, $rgb="", $quality=81)
{
  if (!file_exists($src)) return false;
  if (empty($rgb)) $rgb=0xFFFFFF;
  //echo $rgb;
  //return true;
  $src=FS_DOCROOT."/".$src;
  //echo $src;
  $size = getimagesize($src);

  if ($size === false) return false;

  // ќпредел€ем исходный формат по MIME-информации, предоставленной
  // функцией getimagesize, и выбираем соответствующую формату
  // imagecreatefrom-функцию.
  $format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
  $icfunc = "imagecreatefrom" . $format;
  if (!function_exists($icfunc)) return false;

  $x_ratio = $width / $size[0];
  $y_ratio = $height / $size[1];

  $ratio       = min($x_ratio, $y_ratio);
  $use_x_ratio = ($x_ratio == $ratio);

  $new_width   = $use_x_ratio  ? $width  : floor($size[0] * $ratio);
  $new_height  = !$use_x_ratio ? $height : floor($size[1] * $ratio);
  $new_left    = $use_x_ratio  ? 0 : floor(($width - $new_width) / 2);
  $new_top     = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);

  $isrc = $icfunc($src);
  $idest = imagecreatetruecolor($width, $height);
  
  if ($rgb!="16777215") { 
  $arr=explode(" ", $rgb);
  $rgb=imagecolorallocate($idest, $arr[0], $arr[1], $arr[2]);
  //echo "<br>".$rgb;
  }//if
	
  imagefill($idest, 0, 0, $rgb);
  imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, 
    $new_width, $new_height, $size[0], $size[1]);

  imagejpeg($idest, $dest, $quality);

  imagedestroy($isrc);
  imagedestroy($idest);

  return true;

}

/*
$file_input Ц исходный файл, 
$file_output Ц файл, в который мы будем сохран€ть готовое изображение, 
$w_o и $h_o Ц ширина и высота объекта соответственно, 
$percent Ц логическое выражение, определ€ющее, в чем измер€етс€ длина Ц в пиксел€х 
(по умолчанию) или в процентах. 
*/
function resize($file_input, $file_output, $w_o, $h_o, $percent = false) {
	list($w_i, $h_i, $type) = getimagesize($file_input);
	if (!$w_i || !$h_i) {
		echo 'Ќевозможно получить длину и ширину изображени€';
		return;
        }
        $types = array('','gif','jpeg','png');
        $ext = $types[$type];
        if ($ext) {
    	        $func = 'imagecreatefrom'.$ext;
    	        $img = $func($file_input);
        } else {
    	        echo 'Ќекорректный формат файла';
		return;
        }
	if ($percent) {
		$w_o *= $w_i / 100;
		$h_o *= $h_i / 100;
	}
	if (!$h_o) $h_o = $w_o/($w_i/$h_i);
	if (!$w_o) $w_o = $h_o/($h_i/$w_i);

	$img_o = imagecreatetruecolor($w_o, $h_o);
	imagecopyresampled($img_o, $img, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i);
	if ($type == 2) {
		return imagejpeg($img_o,$file_output,100);
	} else {
		$func = 'image'.$ext;
		return $func($img_o,$file_output);
	}
}


?>